As described in a National Academy's publication entitled “The future of computing performance: Game over or next level?”, the existence of a tremendous amount of sequential code such C, C++, Fortran, Java presents a large problem when one seeks to parallelize the code to permit parallel processing.
Today's microprocessors, executing sequential code, use multiple compute cores to achieve performance improvement. However, without parallel software there is a failure to realize the full performance potential that could be achieved using processors executing parallel code.
Presently flowchart programming systems utilizing object oriented programming such as described in U.S. Pat. No. 6,421,821 only allow serial code to be used as a macro block of serially executed code that is executed top to bottom in a separate thread, with no regard to parallelism or to the advantages of object oriented programs.
Thus the parallelism achievable with a partially ordered transitive flowchart system has heretofore been seen unusable to incorporate the large amounts of sequential code that has been written for various applications throughout different various industries.
For instance upwards of 20 different microprocessors operating each independently and programmed with their own independent sequential codes are used in an automobile to control various automobile functions. The amount of computational power required as well as time to execute all of the routines in each of these microprocessors has not been optimized so that the code written for these processors could be executed in a parallel fashion.
Thus, there are millions and millions of lines of preexisting sequential code that are used in the programming of these microprocessors which cannot quickly and reliably be converted for use in an object oriented format or divvied up amongst multiple processors to provide for parallel processing.
Note that the Flowpro system is a system for visualizing the operation of an object oriented program in which program function and parameters can be easily changed by changing the flowchart blocks or objects.
It is one of the features of the Flowpro system described in the above-mentioned patent that one can execute directly from the flowchart by merely creating the flowchart with various objects. Thereafter the code is executed in accordance with the flowchart.
It is also a primary feature of the Flowpro system that once the Flowpro flowcharts, are generated, the programmer can visualize the program, alter it and execute it.
This system has replaced the PLC ladder diagram programming system and made it easy to control machinery and the like by simply creating a flowchart with objects and various basic blocks and then executing based on executing the blocks in an optimized numeric order.
In the past if an entity wished to use the Flowpro flowcharts to execute code that was written in another language such as C, Pascal, Basic or the like, this code was brought in as a thread or macro and executed as a separate thread within the flowchart. In the past no attempt was made to import or encapsulate serial code per se into Flowpro blocks or objects. The flowcharts of the past would execute the flowchart objects until one got to the point where it would stop its execution to execute the serial code macro, with the macro running until the code finished or in a fixed timesliced fashion. Then the runtime would come back and execute the remaining flow chart objects in the normal manner.
It is noted that a routine that constituted a special routine in another language could not be handled within the flowchart language itself, except by handing off to a macro. Thus, the flowchart execution had to stop and wait for a macro execute itself before going on.
There was therefore a necessity to see if it was possible to import and encapsulate serial code into a Flowpro flowchart format without resorting to macros. The next problem was that once having imported and encapsulated arbitrary code into the Flowpro flowcharts, how could the result be used to generate parallel processing in multiple processors.
In short there is a necessity for an algorithm or methodology to analyze serial code and to create flowchart objects that can be parallelized by distributing so-called TASK objects and Flowpro flowcharts amongst multiple processors.